/******************************************************************************
文 件 名   : sys.h
版 本 号   : V1.0
作    者   : pinot
生成日期   : 2019年10月21日
功能描述   : 系统寄存器配置相关
修改历史   :
日    期   :
作    者   :
修改内容   :
******************************************************************************/

#ifndef _SYS_H_
#define _SYS_H_

/*****************************************************************************
系统库*/

/*****************************************************************************
自定义头文件*/
#include "T5LOS8051.H"

/*****************************************************************************
宏定义变量*/
#ifndef uint8_t
typedef unsigned char uint8_t;
#endif
#ifndef uint16_t
typedef unsigned short uint16_t;
#endif
#ifndef uint32_t
typedef unsigned int uint32_t;
#endif
#ifndef int8_t
typedef char int8_t;
#endif
#ifndef int16_t
typedef short int16_t;
#endif
#ifndef int32_t
typedef int int32_t;
#endif
#ifndef u8
typedef unsigned char u8;
#endif
#ifndef u16
typedef unsigned short u16;
#endif
#ifndef u32
typedef unsigned long u32;
#endif

typedef struct
{
    unsigned char b0 : 1;
    unsigned char b1 : 1;
    unsigned char b2 : 1;
    unsigned char b3 : 1;
    unsigned char b4 : 1;
    unsigned char b5 : 1;
    unsigned char b6 : 1;
    unsigned char b7 : 1;
} _FLAG_bits;

typedef union
{
    _FLAG_bits bits;
    unsigned char byte;
} _TKS_FLAGA_type;
typedef struct _dev_time
{
    u8 year;
    u8 month;
    u8 day;
    u8 week;
    u8 hour;
    u8 min;
    u8 sec;
    u8 res;
} rtc_time;

typedef struct _alarm
{
    u16 alarm1_time;
    u16 alarm2_time;
    u16 alarm1_ring;
    u16 alarm2_ring;
} alarm;

/*****************************************
 *			云变量地址宏定义              *
 *****************************************/
#define SWITCH 0x2600
#define ALARM_KEY 0x2603
#define TIMER_KEY 0x2605
#define SWITCH_OUTPUT 0x2608  // 4个
#define TEMP_CURRENT 0x2610
#define SWITCH_SET 0x2611
#define SCREEN_BRIGHTNESS 0x2612
#define ALARM_VAL 0x2616
#define SCREEN_SAVER_TYPE 0x261A
#define REMOTE_UPDATE 0x261B
#define SCREEN_SAVER_TIME 0x261D
#define TIMER1_WEEK 0x2620
#define TIMER1_TIME_SEED_MODE 0x2621
#define TIMER2_WEEK 0x2632
#define TIMER2_TIME_SEED_MODE 0x2633
#define TIMER3_WEEK 0x2644
#define TIMER3_TIME_SEED_MODE 0x2645
#define MESSAGE_DATA 0x2661
/*****************************************
 *			UI变量地址宏定义              *
 *****************************************/

#define PARM_SET_ERROR 0x200C
// #define PASSWORD_INPUT 0x207A
#define TIME_SET_VALUE 0x2018
#define TIMER_WEEK_DISPLAY 0x2020
#define TIMER_WEEK_SET 0x2040
#define TIMER_DISPLAY_PERIOD 0x2048
#define TIMER_SET_TIME_START 0x2050
#define TIMER_SET_TIME_END 0x2052
#define TIMER_DISPLAY_TIME_ST 0x2054
#define TIMER_DISPLAY_TIME_END 0x2055
#define TIMER_SET_TEMP 0x2058
#define TIMER_SET_SPEED 0x2059
#define TIMER_STATUS 0x2060
#define ALARM_DISPLAY_TIME 0x2068
#define ALARM_SET_VAL 0x2072
#define ALARM_STATUS 0x2075
#define SET_TEMP_SET_VAL_DEC 0x2103
#define SET_TEMP_SET_VALUE 0x2102
#define VCNL4200_VALUE 0x2121
/*****************************************
 *	     配置文件变量地址宏定义           *
 *****************************************/
// #define SOFT_VER_ADDR_SUM 0x2510
#define SOFT_VER_ADDR 0x2512
#define ALS 0x2533
#define PASSWORD_ADDR 0x2538
#define TEMPERATURE_COEFFICIENT 0x2550
#define TEMPERATURE_PRECISION 0x2554
#define TEMPERATURE_UPPER 0x2555
#define TEMPERATURE_LOWER 0x2556
#define SCREEN_SAVER 0x258E
/*****************************************
 *	     NORFLASH变量地址宏定义           *
 *****************************************/
#define MAGIC_NUMBER 0x25E0
/*****************************************
 *	    系统接口变量地址宏定义            *
 *****************************************/
#define NOR_FLASH 0x0008
#define SOFT_VERSION 0x000F
#define RTC 0x0010
#define PIC_NOW 0x0014
#define TP_STATUS 0x0016
#define LED_NOW 0x0031
#define AD_VALUE 0x0032
#define LED_CONFIG 0x0082
#define PIC_SET 0x0084
#define RTC_Set 0x009C
#define RTC_Set_Internet 0xF430
/*****************************************
 *			wifi接口变量地址宏定义        *
 *****************************************/
#define RMA 0x0401
#define EQUIPMENT_MODEL 0x0416
#define QR_CODE 0x0450
#define DISTRIBUTION_NETWORK 0x0498
#define MAC_ADDR 0x0482
#define WIFI_VER 0x0487
#define DISTRIBUTION_STATUS 0x04A1
#define NETWORK_STATUS 0x04A2
#define RTC_NETWORK 0x04AC
#define SSID 0x04B0
#define WIFI_PASSWORD 0x04C0

#define TempSize 100

#define DWIN_OK (0x00)
#define DWIN_ERROR (0xFF)
#define DWIN_NULL_POINT (0x02) /* 空指针 */
#define DWIN_PARAM_ERROR (0x03)
#define NULL ((void*)0)                 /* 数据NULL */
#define FOSC (206438400UL)              /* T5L主频=晶体频率(11.0592M)*56/3 */
#define T1MS (65536 - FOSC / 12 / 1000) /* 10MS定时器 */

/*****************************************************************************
宏定义函数*/
#define WDT_ON() MUX_SEL |= 0x02  /******开启看门狗*********/
#define WDT_OFF() MUX_SEL &= 0xFD /******关闭看门狗*********/
#define WDT_RST() MUX_SEL |= 0x01 /******喂狗*********/

//电源开关宏定义
#define POWER_ON() P2_1 = 1;
#define POWER_OFF() P2_1 = 0;
//电源开关引脚
sbit P2_1 = P2 ^ 1;
//电压反馈，低电平表示按键有效
sbit KEY1_Vin_F = P2 ^ 2;

//三个继电器
sbit switch_output0 = P1 ^ 3;
sbit switch_output1 = P1 ^ 1;
sbit switch_output2 = P1 ^ 4;
sbit switch_output3 = P1 ^ 2;
/*****************************************************************************
对外函数声明*/
extern data _TKS_FLAGA_type MSFlag;
#define MS1msFlag MSFlag.bits.b0
#define MS100msFlag MSFlag.bits.b1
#define MS500msFlag MSFlag.bits.b2
/*****************************************************************************
对外函数声明*/
void InitSys(void); /* 寄存器配置初始化 */
// void DelayUs(uint16_t n);
void DelayMs(uint16_t n);

void read_dgus_vp(u32 addr, u8* buf, u16 len);
void write_dgus_vp(u32 addr, u8* buf, u16 len);

#endif
